﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;

namespace projetoFinal
{
    public class baseWebPage : System.Web.UI.Page
    {
        #region Atributos
        private modulo objModulo = null;
        private nivelAcessoModulo objNivelAcesso = null;
        private Int64? codCadastro = null;
        private bool canRead = false;
        private bool canCreate = false;
        private bool canUpdate = false;
        private bool canDelete = false;
        #endregion

        #region Propriedades
        public modulo Modulo {
            get { return objModulo; }
            protected set { objModulo = value; }
        }
        public nivelAcessoModulo NivelAcesso
        {
            get { return objNivelAcesso; }
            private set { objNivelAcesso = value; }
        }
        public Int64? CodCadastro
        {
            get
            {
                if (codCadastro.HasValue)
                {
                    return codCadastro.Value;
                }
                else
                {
                    return null;
                }
            }
            private set
            {
                codCadastro = value;
            }
        }
        public bool CanRead
        {
            get { return canRead; }
            private set { canRead = value; }
        }
        public bool CanCreate
        {
            get { return canCreate; }
            private set { canCreate = value; }
        }
        public bool CanUpdate
        {
            get { return canUpdate; }
            private set { canUpdate = value; }
        }
        public bool CanDelete
        {
            get { return canDelete; }
            private set { canDelete = value; }
        }
        #endregion

        #region Métodos
        public void ExecutaPermissoes(modulo objModulo, string codUsuario)
        {
            NivelAcesso = operaNivelAcessoModulo.buscar(objModulo, codUsuario);
            if (NivelAcesso != null)
            {
                CanRead = NivelAcesso.Read;
                CanCreate = NivelAcesso.Create;
                CanUpdate = NivelAcesso.Update;
                CanDelete = NivelAcesso.Delete;
            }
        }
        #endregion

        #region Eventos
        protected override void OnInitComplete(EventArgs e)
        {
            base.OnInitComplete(e);

            usuario objUsuario = operaUsuario.buscar(Int64.Parse(HttpContext.Current.User.Identity.Name));
            //Atribui o código da seguradora / prestador de serviço
            if (objUsuario.Seguradora != null)
            {
                this.CodCadastro = objUsuario.Seguradora.CodCadastro;
            }

            ExecutaPermissoes(this.objModulo, objUsuario.CodUsuario.ToString());

            if (!this.CanRead)
            {
                Response.Redirect("/Pages/access_denied.aspx", true);
            }
        }
        #endregion
    }
}